package com.tedu;

import com.tedu.entity.Dir;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * 坦克大战游戏窗口类
 * 实现：游戏窗口
 */
public class TankJream extends JFrame implements KeyListener {

    //设置游戏大小
    private int w=880,h=660;
    //游戏页面对象
    TankJpanel tankJpanel;


    //使用构造方法，进行窗口的初始化（位置+大小）
    public TankJream(){
        //设置位置、大小  屏幕中心与窗口的中心重合
        //获取屏幕的大小---分辨率
        Toolkit toolkit = Toolkit.getDefaultToolkit();//获取系统toolkit对象
        //获取屏幕的大小
        double width = toolkit.getScreenSize().getWidth();
        double height = toolkit.getScreenSize().getHeight();

        //设置大小 位置   窗口在屏幕的中心
        this.setBounds((int) (width/2-w/2), (int) (height/2-h/2)-50,w,h);
        //设置窗口无边框---提升游戏帅气
        this.setUndecorated(true);
        //设置游戏图标
        //获取游戏图片yue.png
        // 设置关闭事件和焦点
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //焦点
        this.setFocusable(true);
        //添加游戏页面
         tankJpanel = new TankJpanel();
        this.add(tankJpanel);
        //显示窗口
        this.setVisible(true);// this关键字：当前对象，TankJream当前的对象

        //做键盘监听
        this.addKeyListener(this);
    }
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("------"+e.getKeyCode());
        //对象.player
        switch (e.getKeyCode()){
            case 87://shang
                tankJpanel.player.setDir(Dir.up);
                break;
            case 65://a  zou
                tankJpanel.player.setDir(Dir.left);
                break;
            case 90://z  xia
                tankJpanel.player.setDir(Dir.down);
                break;
            case 68://d  you
                tankJpanel.player.setDir(Dir.right);
                break;
        }
        tankJpanel.player.move();
        /**
         *     本周作业：
         *     1. 完成坦克大战：敌方坦克移动、发射子弹
         *     2.完成玩家坦克的移动（按键控制）
         *     3.完成玩家坦克发射子弹（参照敌方坦克）
         *     4.参照敌方坦克不能相撞，完成玩家坦克击中敌方坦克；敌方，可以击中玩家坦克（尝试完成）
          */


    }

    @Override
    public void keyReleased(KeyEvent e) {

    }




    /**
     * 开始游戏 ，创建游戏线程  在子线程中，更新ui
     */
    public void startGame() {

        new Thread(new Runnable() {
            @Override
            public void run() { // 子线程执行方法
                //在子线程中，更新UI
                while (true){
                    TankJream.this.repaint();
                    try {
                        Thread.sleep(20);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

    }


}
